package cn.iocoder.yudao.module.trade.service.ordersafetycheckterm;

import javax.validation.*;
import cn.iocoder.yudao.module.trade.controller.admin.ordersafetycheckterm.vo.*;
import cn.iocoder.yudao.module.trade.dal.dataobject.ordersafetycheckterm.OrderSafetyCheckTermDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

import java.util.List;

/**
 * 安检项 Service 接口
 *
 * @author 芋道源码
 */
public interface OrderSafetyCheckTermService {

    /**
     * 创建安检项
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createOrderSafetyCheckTerm(@Valid OrderSafetyCheckTermSaveReqVO createReqVO);

    /**
     * 更新安检项
     *
     * @param updateReqVO 更新信息
     */
    void updateOrderSafetyCheckTerm(@Valid OrderSafetyCheckTermRespVO updateReqVO);

    /**
     * 删除安检项
     *
     * @param id 编号
     */
    void deleteOrderSafetyCheckTerm(Long id);

    /**
     * 获得安检项
     *
     * @param id 编号
     * @return 安检项
     */
    OrderSafetyCheckTermDO getOrderSafetyCheckTerm(Long id);

    /**
     * 获得安检项分页
     *
     * @param pageReqVO 分页查询
     * @return 安检项分页
     */
    PageResult<OrderSafetyCheckTermDO> getOrderSafetyCheckTermPage(OrderSafetyCheckTermPageReqVO pageReqVO);

    /**
     *  批量新增安检项详情
     * @param reqVOList
     */
    void insertBathList(List<OrderSafetyCheckTermSaveReqVO> reqVOList);

    /**
     *  批量更新安检项详情
     * @param termSaveReqVOList
     */
    void updateBathList(List<OrderSafetyCheckTermRespVO> termSaveReqVOList);

    /**
     *  通过安检项标题id查询对应的明细
     * @param id
     * @return
     */
    List<OrderSafetyCheckTermSaveReqVO> getOrderSafetyCheckTermList(Long id);

    void deleteBatchItemIds(List<Long> collect2);


    void compareCheckItem(List<OrderSafetyCheckTermSaveReqVO> termSaveReqVOList);
}